// 初始化枚举扩展
let initEnumExtension = (enumInfo) => {

    // 枚举名称
    let enumName = enumInfo.name ? enumInfo.name : "";

    // 方法名称
    let funcName = `to${enumName}Desc`;

    /*
    * Number转枚举
    * */
    Number.prototype[funcName] = function () {
        return enumInfo[this];
    }

    /*
    * String转枚举
    * */
    String.prototype[funcName] = function () {
        let num = Number(this);
        return Number.isNaN(num) && num ? "" : enumInfo[this];
    }

    /*
    * Boolean转枚举
    * */
    Boolean.prototype[funcName] = function () {
        if (this == true) {
            return enumInfo["1"];
        } else if (this == false) {
            return enumInfo["0"];
        } else {
            return enumInfo["-1"];
        }
    }

    /*
    * 获取描述集
    * */
    let getDescriptions = function () {

        let result = []; // 实例化 返回描述集

        // 遍历 枚举信息
        for (const key in enumInfo) {


            // 转换为Number
            let numberKey = Number(key);

            // 获取是否转换正确
            let isNumberKey = numberKey == 0 || !Number.isNaN(numberKey) && numberKey;

            // 添加转换正确的信息
            if (isNumberKey) {
                result.push({
                    key: key,
                    value: enumInfo[key]
                })
            }
        }

        // 重新排序
        result = result.sort((a, b) => a.key - b.key);

        return result;
    }

    return {
        descriptions: getDescriptions()
    }

}
export default initEnumExtension